Date:
29.04.2013 - 16:19:21
Author:
Rewrite:
Type here:
<?php if(!defined('INITIALIZED')) exit; $timeInSeconds = 600; // 600 seconds = 10 minutes $createdAccountsData = new DatabaseList('Account'); $filterIP = new SQL_Filter(new SQL_Field('create_ip', 'accounts'), SQL_Filter::EQUAL, Visitor::getIP()); $filterTime = new SQL_Filter(new SQL_Field('create_date', 'accounts'), SQL_Filter::GREATER, time() - $timeInSeconds); $filter = new SQL_Filter($filterIP, SQL_Filter::CRITERIUM_AND, $filterTime); $createdAccountsData->setFilter($filter); $accountsCreatedFromUserIP = count($createdAccountsData); if($accountsCreatedFromUserIP > 0) { $main_content .= '<center><h3>You can create only one account per 10 minutes. Try again later.</h3></center>'; } else { //CREATE ACCOUNT FORM PAGE if($action == "") { $main_content .= '<script type="text/javascript"> var accountHttp; function checkAccount() { if(document.getElementById("account_name").value=="") { document.getElementById("acc_name_check").innerHTML = \'<b><font color="red">Please enter account name.</font></b>\'; return; } accountHttp=GetXmlHttpObject(); if (accountHttp==null) { return; } var account = document.getElementById("account_name").value; var url="?subtopic=ajax_check_account&account=" + account + "&uid="+Math.random(); accountHttp.onreadystatechange=AccountStateChanged; accountHttp.open("GET",url,true); accountHttp.send(null); } function AccountStateChanged() { if (accountHttp.readyState==4) { document.getElementById("acc_name_check").innerHTML=accountHttp.responseText; } } var emailHttp; //sprawdza czy dane konto istnieje czy nie function checkEmail() { if(document.getElementById("email").value=="") { document.getElementById("email_check").innerHTML = \'<b><font color="red">Please enter e-mail.</font></b>\'; return; } emailHttp=GetXmlHttpObject(); if (emailHttp==null) { return; } var email = document.getElementById("email").value; var url="?subtopic=ajax_check_email&email=" + email + "&uid="+Math.random(); emailHttp.onreadystatechange=EmailStateChanged; emailHttp.open("GET",url,true); emailHttp.send(null); } function EmailStateChanged() { if (emailHttp.readyState==4) { document.getElementById("email_check").innerHTML=emailHttp.responseText; } } function validate_required(field,alerttxt) { with (field) { if (value==null||value==""||value==" ") { alert(alerttxt); return false; } else { return true; } } } function validate_email(field,alerttxt) { with (field) { apos=value.indexOf("@"); dotpos=value.lastIndexOf("."); if (apos<1||dotpos-apos<2) { alert(alerttxt); return false; } else { return true; } } } function validate_form(thisform) { with (thisform) { if(validate_required(account_name,"Please enter name of new account!")==false) { account_name.focus(); return false; } if(validate_required(email,"Please enter your e-mail!")==false) { email.focus(); return false; } if(validate_email(email,"Invalid e-mail format!")==false) { email.focus(); return false; } if(verifpass==1) { if(validate_required(passor,"Please enter password!")==false) { passor.focus(); return false; } if (validate_required(passor2,"Please repeat password!")==false) { passor2.focus(); return false; } if(passor2.value!=passor.value) { alert(\'Repeated password is not equal to password!\'); return false; } } if(verifya==1) { if (validate_required(verify,"Please enter verification code!")==false) { verify.focus();return false; } } if(rules.checked==false) { alert(\'To create account you must accept server rules!\'); return false; } } } </script>'; $main_content .= '<center><h3>Create your account and register right away to avoid any future problems with loss and theft.</h3></center> <FORM ACTION="?subtopic=createaccount&action=saveaccount" onsubmit="return validate_form(this)" METHOD=post> <TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4> <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>Create an '.htmlspecialchars($config['server']['serverName']).' Account</B></TD></TR> <TR><TD BGCOLOR="'.$config['site']['darkborder'].'"><TABLE BORDER=0 CELLSPACING=8 CELLPADDING=0> <TR><TD> <TABLE BORDER=0 CELLSPACING=5 CELLPADDING=0>'; $main_content .= '<TR><TD width="150" valign="top"><B>Account name: </B></TD><TD colspan="2"><INPUT id="account_name" NAME="reg_name" onkeyup="checkAccount();" VALUE="" SIZE=30 MAXLENGTH=50><BR><font size="1" face="verdana,arial,helvetica">(Please enter your new account name)</font></TD></TR> <TR><TD width="150"><b>Name status:</b></TD><TD colspan="2"><b><div id="acc_name_check">Please enter your account name.</div></b></TD></TR> <TR><TD width="150" valign="top"><B>Email address: </B></TD><TD colspan="2"><INPUT id="email" NAME="reg_email" onkeyup="checkEmail();" VALUE="" SIZE=30 MAXLENGTH=50><BR><font size="1" face="verdana,arial,helvetica">(Your email address is required to recovery an '.htmlspecialchars($config['server']['serverName']).' account)</font></TD></TR> <TR><TD width="150"><b>Email status:</b></TD><TD colspan="2"><b><div id="email_check">Please enter your e-mail.</div></b></TD></TR>'; if(!$config['site']['create_account_verify_mail']) $main_content .= '<script type="text/javascript">var verifpass=1;</script> <TR><TD width="150" valign="top"><B>Password: </B></TD><TD colspan="2"><INPUT TYPE="password" id="passor" NAME="reg_password" VALUE="" SIZE=30 MAXLENGTH=50><BR><font size="1" face="verdana,arial,helvetica">(Here write your password to new account on '.htmlspecialchars($config['server']['serverName']).')</font></TD></TR> <TR><TD width="150" valign="top"><B>Repeat password: </B></TD><TD colspan="2"><INPUT TYPE="password" id="passor2" NAME="reg_password2" VALUE="" SIZE=30 MAXLENGTH=50><BR><font size="1" face="verdana,arial,helvetica">(Repeat your password)</font></TD></TR>'; else $main_content .= '<script type="text/javascript">var verifpass=0;</script>'; if($config['site']['verify_code']) $main_content .= '<script type="text/javascript">var verifya=1;</script><TR><TD width="150"><B>Code: </B></TD><TD colspan="2"><img src="?subtopic=imagebuilder&image_refresher='.mt_rand(1,99999).'" border="0" alt="Image Verification is missing, please contact the administrator"></TD></TR> <TR><TD width="150" valign="top"><B>Verification Code: </B></TD><TD colspan="2"><INPUT id="verify" NAME="reg_code" VALUE="" SIZE=30 MAXLENGTH=50><BR><font size="1" face="verdana,arial,helvetica">(Here write verification code from picture)</font></TD></TR>'; else $main_content .= '<script type="text/javascript">var verifya=0;</script>'; $main_content .= '</TABLE> </TD></TR> <TR><TD> <TABLE BORDER=0 CELLSPACING=5 CELLPADDING=0><TR><TD> </TD></TR> <TR><TD> <center><h1>Rules 4War</h1><b><font color=red>Keep in mind that to create your account you must accept the terms listed here, so any clarification wont be grounds for justification.</b></font></center> <TEXTAREA ROWS="16" WRAP="physical" COLS="75" READONLY="true">'; //load server rules from file include("pages/tibiarules.php"); $main_content .= '</TEXTAREA> </TD></TR></TABLE> </TD></TR> <TR><TD> <TABLE BORDER=0 CELLSPACING=5 CELLPADDING=0> <TR><TD> <INPUT TYPE="checkbox" NAME="rules" id="rules" value="true" /><label for="rules"><u> I agree to the '.htmlspecialchars($config['server']['serverName']).' Rules.</u></lable><BR> </TD></TR> <TR><TD> If you fully agree to these terms, click on the "I Agree" button in order to create an '.htmlspecialchars($config['server']['serverName']).' account.<BR> If you do not agree to these terms or do not want to create an '.htmlspecialchars($config['server']['serverName']).' account, please click on the "Cancel" button. </TD></TR></TABLE> </TD></TR> </TABLE></TD></TR> </TABLE> <BR> <TABLE BORDER=0 WIDTH=100%> <TR><TD ALIGN=center> <IMG SRC="'.$layout_name.'/images/blank.gif" WIDTH=120 HEIGHT=1 BORDER=0><BR> </TD><TD ALIGN=center VALIGN=top> <INPUT TYPE=image NAME="I Agree" SRC="'.$layout_name.'/images/buttons/sbutton_iagree.gif" BORDER=0 WIDTH=120 HEIGHT=18> </FORM> </TD><TD ALIGN=center> <FORM ACTION="?subtopic=latestnews" METHOD=post> <INPUT TYPE=image NAME="Cancel" SRC="'.$layout_name.'/images/buttons/sbutton_cancel.gif" BORDER=0 WIDTH=120 HEIGHT=18> </FORM> </TD><TD ALIGN=center> <IMG SRC="/images/blank.gif" WIDTH=120 HEIGHT=1 BORDER=0><BR> </TD></TR> </TABLE> </TD> <TD><IMG SRC="'.$layout_name.'/images/blank.gif" WIDTH=10 HEIGHT=1 BORDER=0></TD> </TR> </TABLE>'; } //CREATE ACCOUNT PAGE (save account in database) if($action == "saveaccount") { $reg_name = strtoupper(trim($_POST['reg_name'])); $reg_email = trim($_POST['reg_email']); $reg_password = trim($_POST['reg_password']); $reg_code = trim($_POST['reg_code']); //FIRST check //check e-mail if(empty($reg_name)) $reg_form_errors[] = "Please enter account name."; elseif(!check_account_name($reg_name)) $reg_form_errors[] = "Invalid account name format. Use only A-Z and numbers 0-9."; if(empty($reg_email)) $reg_form_errors[] = "Please enter your email address."; else { if(!check_mail($reg_email)) $reg_form_errors[] = "E-mail address is not correct."; } if($config['site']['verify_code']) { //check verification code $string = strtoupper($_SESSION['string']); $userstring = strtoupper($reg_code); session_destroy(); if(empty($string)) $reg_form_errors[] = "Information about verification code in session is empty."; else { if(empty($userstring)) $reg_form_errors[] = "Please enter verification code."; else { if($string != $userstring) $reg_form_errors[] = "Verification code is incorrect."; } } } //check password if(empty($reg_password) && !$config['site']['create_account_verify_mail']) $reg_form_errors[] = "Please enter password to your new account."; elseif(!$config['site']['create_account_verify_mail']) { if(!check_password($reg_password)) $reg_form_errors[] = "Password contains illegal chars (a-z, A-Z and 0-9 only!) or lenght."; } //SECOND check //check e-mail address in database if(empty($reg_form_errors)) { if($config['site']['one_email']) { $test_email_account = new Account(); //load account with this e-mail $test_email_account->findByEmail($reg_email); if($test_email_account->isLoaded()) $reg_form_errors[] = "Account with this e-mail address already exist in database."; } $account_db = new Account(); $account_db->find($reg_name); if($account_db->isLoaded()) $reg_form_errors[] = 'Account with this name already exist.'; } // ----------creates account-------------(save in database) if(empty($reg_form_errors)) { //create object 'account' and generate new acc. number if($config['site']['create_account_verify_mail']) { $reg_password = ''; for ($i = 1; $i <= 6; $i++) $reg_password .= mt_rand(0,9); } $reg_account = new Account(); // saves account information in database $reg_account->setName($reg_name); $reg_account->setPassword($reg_password); $reg_account->setEMail($reg_email); $reg_account->setGroupID(1); $reg_account->setCreateDate(time()); $reg_account->setCreateIP(Visitor::getIP()); $reg_account->setFlag(Website::getCountryCode(long2ip(Visitor::getIP()))); if(isset($config['site']['newaccount_premdays']) && $config['site']['newaccount_premdays'] > 0) { $reg_account->set("premdays", $config['site']['newaccount_premdays']); $reg_account->set("lastday", time()); } $reg_account->save(); //show information about registration if($config['site']['send_emails'] && $config['site']['create_account_verify_mail']) { $mailBody = '<html> <body> <h3>Your account name and password!</h3> <p>You or someone else registred on server <a href="'.$config['server']['url'].'"><b>'.htmlspecialchars($config['server']['serverName']).'</b></a> with this e-mail.</p> <p>Account name: <b>'.htmlspecialchars($reg_name).'</b></p> <p>Password: <b>'.htmlspecialchars(trim($reg_password)).'</b></p> <br /> <p>After login you can:</p> <li>Create new characters <li>Change your current password <li>Change your current e-mail </body> </html>'; $mail = new PHPMailer(); if ($config['site']['smtp_enabled']) { $mail->IsSMTP(); $mail->Host = $config['site']['smtp_host']; $mail->Port = (int)$config['site']['smtp_port']; $mail->SMTPAuth = $config['site']['smtp_auth']; $mail->Username = $config['site']['smtp_user']; $mail->Password = $config['site']['smtp_pass']; } else $mail->IsMail(); $mail->IsHTML(true); $mail->From = $config['site']['mail_address']; $mail->AddAddress($reg_email); $mail->Subject = $config['server']['serverName']." - Registration"; $mail->Body = $mailBody; if($mail->Send()) { $main_content .= 'Your account has been created. Check your e-mail. See you in Tibia!<BR><BR>'; $main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4> <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>Account Created</B></TD></TR> <TR><TD BGCOLOR="'.$config['site']['darkborder'].'"> <TABLE BORDER=0 CELLPADDING=1><TR><TD> <BR>Your account name is: <b>'.$reg_name.'</b>. <BR><b><i>You will receive e-mail (<b>'.htmlspecialchars($reg_email).'</b>) with your password.</b></i><br>'; $main_content .= 'You will need the account name and your password to play on '.htmlspecialchars($config['server']['serverName']).'. Please keep your account name and password in a safe place and never give your account name or password to anybody.<BR><BR>'; $main_content .= '<br /><small>These informations were send on email address <b>'.htmlspecialchars($reg_email).'</b>. Please check your inbox/spam folder.'; } else { $main_content .= '<br /><small>An error occorred while sending email! Account not created. Try again.</small>'; $reg_account->delete(); } } else { $main_content .= 'Your account has been created. Now you can login and create your first character. See you in Tibia!<BR><BR>'; $main_content .= '<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4> <TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>Account Created</B></TD></TR> <TR><TD BGCOLOR="'.$config['site']['darkborder'].'"> <TABLE BORDER=0 CELLPADDING=1><TR><TD> <BR>Your account name is <b>'.htmlspecialchars($reg_name).'</b><br>You will need the account name and your password to play on '.htmlspecialchars($config['server']['serverName']).'. Please keep your account name and password in a safe place and never give your account name or password to anybody.<BR><BR>'; if($config['site']['send_emails'] && $config['site']['send_register_email']) { $mailBody = '<html> <body> <h3>Your account name and password!</h3> <p>You or someone else registred on server <a href="'.$config['server']['url'].'"><b>'.htmlspecialchars($config['server']['serverName']).'</b></a> with this e-mail.</p> <p>Account name: <b>'.htmlspecialchars($reg_name).'</b></p> <p>Password: <b>'.htmlspecialchars(trim($reg_password)).'</b></p> <br /> <p>After login you can:</p> <li>Create new characters <li>Change your current password <li>Change your current e-mail </body> </html>'; $mail = new PHPMailer(); if ($config['site']['smtp_enabled']) { $mail->IsSMTP(); $mail->Host = $config['site']['smtp_host']; $mail->Port = (int)$config['site']['smtp_port']; $mail->SMTPAuth = $config['site']['smtp_auth']; $mail->Username = $config['site']['smtp_user']; $mail->Password = $config['site']['smtp_pass']; } else $mail->IsMail(); $mail->IsHTML(true); $mail->From = $config['site']['mail_address']; $mail->AddAddress($reg_email); $mail->Subject = $config['server']['serverName']." - Registration"; $mail->Body = $mailBody; if($mail->Send()) $main_content .= '<br /><small>These informations were send on email address <b>'.htmlspecialchars($reg_email).'</b>.'; else $main_content .= '<br /><small>An error occorred while sending email (<b>'.htmlspecialchars($reg_email).'</b>)!</small>'; } } $main_content .= '</TD></TR></TABLE></TD></TR></TABLE><BR><BR>'; } else { //SHOW ERRORs if data from form is wrong $main_content .= '<div class="SmallBox" > <div class="MessageContainer" > <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div> <div class="BoxFrameEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="BoxFrameEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="ErrorMessage" > <div class="BoxFrameVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div> <div class="BoxFrameVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div> <div class="AttentionSign" style="background-image:url('.$layout_name.'/images/content/attentionsign.gif);" /></div><b>The Following Errors Have Occurred:</b><br/>'; foreach($reg_form_errors as $show_msg) { $main_content .= '<li>'.$show_msg.'</li>'; } $main_content .= '</div> <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div> <div class="BoxFrameEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="BoxFrameEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> </div></div><br/> <BR> <CENTER> <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><FORM ACTION=?subtopic=createaccount METHOD=post><TR><TD> <INPUT TYPE=hidden NAME=email VALUE=""> <INPUT TYPE=image NAME="Back" ALT="Back" SRC="'.$layout_name.'/images/buttons/sbutton_back.gif" BORDER=0 WIDTH=120 HEIGHT=18> </TD></TR></FORM></TABLE> </CENTER>'; } } }